home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / asmutil / asmhelp.zip / BIOS_DOS.DOC next >
Text File  |  1987-10-30  |  29KB  |  1,310 lines

  1. **************************************************************************
  2. **                                    **
  3. **    bios_dos.doc                            **
  4. **                                    **
  5. **    This file documents the services provided by the ROM BIOS and    **
  6. **        DOS of the IBM-PC family of computers.            **
  7. **                                    **
  8. **************************************************************************
  9.  
  10. ROM BIOS
  11. --------
  12.  
  13. rom_prt_sc    ROM PRINT SCREEN SERVICE [int 05]
  14.     in:    none
  15.     out:    0050:0000 = status code
  16.             00 = ready
  17.             01 = busy
  18.             FF = previous operation not completed successfully
  19.  
  20.  
  21. rom_vid        ROM VIDEO SERVICES [int 10]
  22.  
  23. WRITE VIDEO MODE - rom_vid
  24.     in:    ah = wr_vid_mode [00]
  25.         al = mode    00 = 40 X 25 text 16 grey     \
  26.                 01 = 40 X 25 text 16/8 color      |
  27.                 02 = 80 X 25 text 16 grey      |
  28.                 03 = 80 X 25 text 16/8 color      | CGA
  29.                 04 = 320 X 200 graphics 4 color      |
  30.                 05 = 320 X 200 graphics 4 grey      |
  31.                 06 = 640 X 200 graphics b/w     /
  32.                 07 = 80 X 25 text b/w          | MDA
  33.                 08 = 160 X 200 graphics 16 color \
  34.                 09 = 320 X 200 graphics 16 color  | PC-JR
  35.                 0A = 640 X 200 graphics 4 color     /
  36.                 0D = 320 X 200 graphics 16 color \
  37.                 0E = 640 X 200 graphics 16 color  | EGA
  38.                 0F = 640 X 350 graphics 4 color  /
  39.     out:    none
  40.     notes:    Setting mode clears the buffers, clearing the screen (slowly).
  41.  
  42. WRITE CURSOR SIZE - rom_vid
  43.     in:    ah = wr_cur_size [01]
  44.         ch = start line        CGA = 0 to 7, default = 6, 7
  45.         cl = end line        MDA = 0 to 13, default = 12, 13
  46.     out:    none
  47.     notes:    Setting ch bit 5 causes cursor to disappear.  If start line
  48.         is less than end line, a normal single part cursor is created.
  49.         If start line is greater than end line, a two part cursor is
  50.         created.
  51.  
  52. WRITE CURSOR POSITION - rom_vid
  53.     in:    ah = wr_cur_pos [02]
  54.         bh = page (0 for graphics modes)
  55.         dh = row
  56.         dl = col
  57.     out:    none
  58.     notes:    Writing cursor to an off screen position causes it to
  59.         disappear.
  60.  
  61. READ CURSOR POSITION - rom_vid
  62.     in:    ah = rd_cur_pos [03]
  63.     out:    bh = page (0 for graphics modes)
  64.         ch = start line
  65.         cl = end line
  66.         dh = row
  67.         dl = col
  68.  
  69. READ LIGHT PEN POSITION - rom_vid
  70.     in:    ah = rd_pen_pos [04]
  71.     out:    ah = pen trigger switch
  72.             1 = triggered
  73.             0 = not triggered
  74.         bx = pixel col
  75.         ch = pixel row
  76.         dh = char row
  77.         dl = char col
  78.  
  79. WRITE ACTIVE PAGE - rom_vid
  80.     in:    ah = wr_act_page [05]
  81.         al = page
  82.     out:    none
  83.  
  84. PC-JR WRITE ACTIVE PAGE - rom_vid
  85.     in:    ah = wr_act_page [05]
  86.         al = 80
  87.     out:    bh = CRT reg
  88.         bl = CPU reg
  89.  
  90.     in:    ah = wr_act_page [05]
  91.         al = 81
  92.         bl = CPU reg
  93.     out:    bh = CRT reg
  94.         bl = CPU reg
  95.  
  96.     in:    ah = wr_act_page [05]
  97.         al = 82
  98.         bh = CRT reg
  99.     out:    bh = CRT reg
  100.         bl = CPU reg
  101.  
  102.     in:    ah = wr_act_page [05]
  103.         al = 83
  104.         bh = CRT reg
  105.         bl = CPU reg
  106.     out:    bh = CRT reg
  107.         bl = CPU reg
  108.  
  109. SCROLL WINDOW UP - rom_vid
  110.     in:    ah = scroll_up [06]
  111.         al = lines (0 = all)
  112.         bh = color attribute
  113.             bit 7 = blink
  114.             bit 6 = backgnd red
  115.             bit 5 = backgnd green
  116.             bit 4 = backgnd blue
  117.             bit 3 = foregnd intensity
  118.             bit 2 = foregnd red
  119.             bit 1 = foregnd green
  120.             bit 0 = foregnd blue
  121.         ch = upper row
  122.         cl = left col
  123.         dh = lower row
  124.         dl = right col
  125.     out:    none
  126.  
  127. SCROLL WINDOW DOWN - rom_vid
  128.     in:    ah = scroll_down [07]
  129.         al = lines (0 = all)
  130.         bh = color attribute (see scroll_up)
  131.         ch = upper row
  132.         cl = left col
  133.         dh = lower row
  134.         dl = right col
  135.     out:    none
  136.  
  137. READ CHARACTER AND ATTRIBUTE - rom_vid
  138.     in:    ah = rd_char_attr [08]
  139.         bh = page
  140.     out:    al = char
  141.         ah = color attribute (see scroll_up)
  142.  
  143. WRITE CHARACTER AND ATTRIBUTE - rom_vid
  144.     in:    ah = wr_char_attr [09]
  145.         al = char
  146.         bh = page
  147.         bl = color attribute (see scroll_up)
  148.         cx = chars
  149.     out:    none
  150.     notes:    Cursor is not moved.
  151.  
  152. WRITE CHARACTER - rom_vid
  153.     in:    ah = wr_char [0A]
  154.         al = char
  155.         bh = page
  156.         bl = graphics mode color
  157.         cx = chars
  158.     out:    none
  159.     notes:    Cursor is not moved.
  160.  
  161. WRITE COLOR PALETTE - rom_vid
  162.     in:    ah = wr_col_pal [0B]
  163.         bh = palette id
  164.         bl = color
  165.     out:    none
  166.  
  167. WRITE PIXEL - rom_vid
  168.     in:    ah = wr_pixel [0C]
  169.         al = color
  170.         cx = pixel col
  171.         dl = pixel row
  172.     out:    none
  173.  
  174. READ PIXEL - rom_vid
  175.     in:    ah = rd_pixel [0D]
  176.         cx = pixel col
  177.         dl = pixel row
  178.     out:    al = color
  179.  
  180. WRITE TTY CHARACTER - rom_vid
  181.     in:    ah = wr_tty [0E]
  182.         al = char
  183.         bl = graphics mode color
  184.     out:    none
  185.  
  186. READ VIDEO MODE - rom_vid
  187.     in:    ah = rd_vid_mode [0F]
  188.     out:    ah = width in chars
  189.         al = video mode
  190.         bh = page (0 for graphics modes)
  191.  
  192. PC-JR WRITE COLOR PALETTE REGISTER - rom_vid
  193.     in:    ah = wr_pal_reg [10]
  194.         al = 00
  195.         bh = palette value
  196.         bl = palette reg
  197.     out:    none
  198.  
  199.     in:    ah = wr_pal_reg [10]
  200.         al = 01
  201.         bh = border color
  202.     out:    none
  203.  
  204. PC-AT WRITE STRING - rom_vid
  205.     in:    ah = wr_string [13]
  206.         al = cursor movement switch
  207.             00 = no
  208.             01  = yes
  209.         bl = color attribute (see scroll_up)
  210.         bh = page
  211.         dx = start cursor position
  212.         cx = string length
  213.          es:bp = string pointer
  214.     out:    none
  215.  
  216.  
  217. rom_equ        ROM EQUIPMENT SERVICE [int 11]
  218.     in:    none
  219.     out:    ax bit settings = equipment list
  220.             0 = disk drive
  221.             1 = math coprocessor
  222.               2,3 = system board RAM in 16k blocks
  223.               4,5 = initial video mode
  224.                 00 = unused
  225.                 01 = 40 X 25 color
  226.                 10 = 80 X 25 color
  227.                 11 = 80 X 25 b/w
  228.               6,7 = number of disk drives
  229.             8 = DMA not present
  230.           9,10,11 = number of RS232 cards in system
  231.                12 = game I/O present
  232.                13 = serial printer present
  233.             14,15 = number of printers present
  234.  
  235.  
  236. rom_mem        ROM MEMORY SIZE SERVICE [int 12]
  237.     in:    none
  238.     out:    ax = size in K
  239.  
  240.  
  241. rom_disk    ROM DISKETTE SERVICES [int 13]
  242.  
  243. RESET DISKETTE SYSTEM - rom_disk
  244.     in:    ah = rst_disk [00]
  245.     out:    none
  246.  
  247. READ DISKETTE STATUS - rom_disk
  248.     in:    ah = rd_disk_stat [01]
  249.     out:    al = return code
  250.             01 = bad command
  251.             02 = address mark not found
  252.             03 = write protected
  253.             04 = sector not found
  254.             06 = no disk
  255.             08 = DMA overrun
  256.             09 = DMA across 64K boundary
  257.             10 = bad CRC
  258.             20 = controller failed
  259.             40 = seek failed
  260.             80 = time out
  261.  
  262. READ DISKETTE SECTOR - rom_disk
  263.     in:    ah = rd_disk_sect [02]
  264.         al = sectors to read
  265.         ch = track
  266.         cl = sector
  267.         dh = head
  268.         dl = drive
  269.          es:bx = buffer pointer
  270.     out:    cf = error
  271.         ah = return code (see rd_disk_stat)
  272.         al = sectors read
  273.  
  274. WRITE DISKETTE SECTOR - rom_disk
  275.     in:    ah = wr_disk_sect [03]
  276.         al = sectors to write
  277.         ch = track
  278.         cl = sector
  279.         dh = head
  280.         dl = drive
  281.          es:bx = buffer pointer
  282.     out:    cf = error
  283.         ah = return code (see rd_disk_stat)
  284.         al = sectors written
  285.  
  286. VERIFY DISKETTE SECTOR - rom_disk
  287.     in:    ah = ver_disk_sect [04]
  288.         al = sectors to verify
  289.         ch = track
  290.         cl = sector
  291.         dh = head
  292.         dl = drive
  293.          es:bx = buffer pointer
  294.     out:    cf = error
  295.         ah = return code (see rd_disk_stat)
  296.         al = sectors verified
  297.  
  298. FORMAT DISKETTE TRACK - rom_disk
  299.     in:    ah = fmt_disk_trk [05]
  300.         al = sectors to format
  301.         ch = track
  302.         cl = sector
  303.         dh = head
  304.         dl = drive
  305.          es:bx = four byte address field pointer
  306.             byte 1 = track
  307.             byte 2 = head
  308.             byte 3 = sector
  309.             byte 4 = bytes/sector
  310.     out:    cf = error
  311.         ah = return code (see rd_disk_stat)
  312.         al = sectors formatted
  313.  
  314. PC-AT READ DISKETTE PARAMETERS - rom_disk
  315.     in:    ah = rd_disk_parm [08]
  316.     out:    cf = error
  317.         ah = return code (see rd_disk_stat)
  318.         dl = drives
  319.         dh = max sides
  320.         cl = max sectors
  321.         ch = max tracks
  322.  
  323. PC-AT INITIALIZE DISKETTE PARAMETERS - rom_disk
  324.     in:    ah = init_disk_parm [09]
  325.     out:    cf = error
  326.         ah = return code (see rd_disk_stat)
  327.         int 41 vector points to drive 0 table
  328.         int 46 vector points to drive 1 table
  329.  
  330. PC-AT READ DISKETTE LONG - rom_disk [0A]
  331.     in:    ah = rd_disk_long
  332.         ch = cylinder
  333.         cl = sector
  334.         dh = head
  335.         dl = drive
  336.          es:bx = buffer pointer
  337.     out:    cf = error
  338.         ah = return code (see rd_disk_stat)
  339.  
  340. PC-AT WRITE DISKETTE LONG - rom_disk
  341.     in:    ah = wr_disk_long [0B]
  342.         ch = sector
  343.         dh = head
  344.         dl = drive
  345.          es:bx = buffer pointer
  346.     out:    cf = error
  347.         ah = return code (see rd_disk_stat)
  348.  
  349. PC-AT SEEK DISKETTE TRACK - rom_disk
  350.     in:    ah = disk_seek [0C]
  351.         ch = sector
  352.         dh = head
  353.         dl = drive
  354.          es:bx = buffer pointer
  355.     out:    cf = error
  356.         ah = return code (see rd_disk_stat)
  357.  
  358. PC-AT ALTERNATE DISKETTE RESET - rom_disk
  359.     in:    ah = alt_reset_disk [0D]
  360.         dl = drive
  361.     out: